package com.sc.nft.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sc.nft.entity.dto.NftRegionBindingEditDTO;
import com.sc.nft.entity.dto.NftRegionBindingPageDTO;
import com.sc.nft.entity.dto.NftRegionBindingSaveDTO;
import com.sc.nft.entity.vo.NftRegionBindingPageVO;
import com.sc.nft.entity.vo.NftRegionBindingUserVO;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * nft版权部分绑定(NftRegionBinding)表服务接口
 *
 * @author 王伟成
 * @since 2023-10-11 16:47:36
 */
public interface NftRegionBindingService {


    /**
     * 更新活跃度
     */
    void updateActivation();

    /**
     * 获取nft绑定的藏品id和关联用户
     * @return NftRegionBindingUserVO
     */
    List<NftRegionBindingUserVO> listBindUserId();

    /**
     * 获取nft版权繁荣度
     *
     * @param nftId nftId
     * @return Int 人数
     */
    BigDecimal getMapProsperity(Long nftId);

    /**
     * 更新nft权益有效时间
     *
     * @param nftId nftId
     * @param days 天数
     */
    void updateNftEffectiveTime(Long nftId);

    /**
     * 获取nft权益有效时间
     *
     * @param nftId nftId
     * @return Date 权益时间
     */
    Date getNftEffectiveTime(Long nftId);


    /**
     * 获取nft是否有绑定地图
     *
     * @param nftId nftId
     * @return Date 权益时间
     */
    Boolean getNftBinding(Long nftId);

    /**
     * 新增数据
     *
     * @param nftRegionBindingSaveDTO
     */
    void save(NftRegionBindingSaveDTO nftRegionBindingSaveDTO);

    /**
     * 编辑数据
     *
     * @param nftRegionBindingEditDTO
     */
    void edit(NftRegionBindingEditDTO nftRegionBindingEditDTO);

    /**
     * 根据id删除数据
     *
     * @param id
     */
    void removeById(Long id);

    /**
     * 获取该专场绑定的nft集合数据
     * @param nftRegionBindingPageDTO
     * @return
     */
    Page<NftRegionBindingPageVO> page(NftRegionBindingPageDTO nftRegionBindingPageDTO);
}
